package com.atguigu.util

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

/**
 * description ：controll app
 * author      ：剧情再美终是戏
 * mail        : 13286520398@163.com
 * date        ：Created in 2020/3/6 14:34
 * modified By ：
 * version:    : 1.0
 */
trait BaseControll {

  private var appName = "default";

  // args[0:"2020-03-06", 1:"webA"]
  def main(args: Array[String]): Unit = {
    // 获取时间
    var dt: String = "20190722"
    var dn: String = "webA"
    if (null != args && args.length > 0) {
      dt = args(0)
      dn = args(1)
    }
    // 初始化 sparkConf
    val conf = new SparkConf()
    conf.setAppName(appName)
    conf.setMaster("local[*]") // 本地调试下使用本地模式， 打包运行前需要注释这个参数

    // 获取 sparksession
    val spark = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()

    // 业务处理
    doSmething(spark, dt, dn);

    // 关闭 sparkSession
    spark.close()
  }

  // 初始化 appName
  def initAppName(appName: String): Unit = {
    this.appName = appName;
  }

  // 业务操作, spark：sparkSession;dn：时间, 这个一般是分区表的时间
  def doSmething(spark: SparkSession, dt: String = null, dn: String = null);
}
